﻿using System.Collections.Generic;
using MediFox.Synchronization.ClientServices.PerstSyncProvider;

namespace DefaultScope
{
    public class DefaultScopeOfflineContext : PerstOfflineContext
    {

        private const string SyncScopeName = "DefaultScope";

        public DefaultScopeOfflineContext(string cachePath, System.Uri serviceUri) :
            base(GetSchema(), SyncScopeName, cachePath, serviceUri)
        {
        }

        public DefaultScopeOfflineContext(string cachePath, System.Uri serviceUri, string cipherKey) :
            base(GetSchema(), SyncScopeName, cachePath, serviceUri, cipherKey)
        {
        }

        //public IEnumerable<Tag> TagCollection
        //{
        //    get
        //    {
        //        return base.GetCollection<Tag>();
        //    }
        //}

        //public IEnumerable<Priority> PriorityCollection
        //{
        //    get
        //    {
        //        return base.GetCollection<Priority>();
        //    }
        //}

        //public IEnumerable<Status> StatusCollection
        //{
        //    get
        //    {
        //        return base.GetCollection<Status>();
        //    }
        //}

        //public IEnumerable<User> UserCollection
        //{
        //    get
        //    {
        //        return base.GetCollection<User>();
        //    }
        //}

        //public IEnumerable<List> ListCollection
        //{
        //    get
        //    {
        //        return base.GetCollection<List>();
        //    }
        //}

        //public IEnumerable<Item> ItemCollection
        //{
        //    get
        //    {
        //        return base.GetCollection<Item>();
        //    }
        //}

        //public IEnumerable<TagItemMapping> TagItemMappingCollection
        //{
        //    get
        //    {
        //        return base.GetCollection<TagItemMapping>();
        //    }
        //}

        //public void AddTag(Tag entity)
        //{
        //    base.AddItem<Tag>(entity);
        //}

        //public void DeleteTag(Tag entity)
        //{
        //    base.DeleteItem<Tag>(entity);
        //}

        //public void AddPriority(Priority entity)
        //{
        //    base.AddItem<Priority>(entity);
        //}

        //public void DeletePriority(Priority entity)
        //{
        //    base.DeleteItem<Priority>(entity);
        //}

        //public void AddStatus(Status entity)
        //{
        //    base.AddItem<Status>(entity);
        //}

        //public void DeleteStatus(Status entity)
        //{
        //    base.DeleteItem<Status>(entity);
        //}

        //public void AddUser(User entity)
        //{
        //    base.AddItem<User>(entity);
        //}

        //public void DeleteUser(User entity)
        //{
        //    base.DeleteItem<User>(entity);
        //}

        //public void AddList(List entity)
        //{
        //    base.AddItem<List>(entity);
        //}

        //public void DeleteList(List entity)
        //{
        //    base.DeleteItem<List>(entity);
        //}

        //public void AddItem(Item entity)
        //{
        //    base.AddItem<Item>(entity);
        //}

        //public void DeleteItem(Item entity)
        //{
        //    base.DeleteItem<Item>(entity);
        //}

        //public void AddTagItemMapping(TagItemMapping entity)
        //{
        //    base.AddItem<TagItemMapping>(entity);
        //}

        //public void DeleteTagItemMapping(TagItemMapping entity)
        //{
        //    base.DeleteItem<TagItemMapping>(entity);
        //}

        private static PerstOfflineSchema GetSchema()
        {
            PerstOfflineSchema schema = new PerstOfflineSchema();
            schema.AddCollection<Tag>();
            schema.AddCollection<Priority>();
            schema.AddCollection<Status>();
            schema.AddCollection<User>();
            schema.AddCollection<List>();
            schema.AddCollection<Item>();
            schema.AddCollection<TagItemMapping>();
            return schema;
        }
    }
}
